람다식

✒️ 2025-05-15 13:42 내용 수정


함수형 프로그래밍을 표현하기 위한 것, 메서드를 하나의 식으로 표현한 것


람다식과 외부 변수의 관계


람다식 표현

public void print(String str) {
	System.out.println(str);
}

// 람다식
str -> {System.out.println(str);};
int add(int x, int y) {
	return x + y;
}

// 람다식
(x, y) -> {return x + y;};
public void print(int x, int y) {
	System.out.println(x + y);
}

// 람다식
(x, y) -> System.out.println(x + y);
int add(int x, int y) {
	return x + y;
}

// 람다식
(x, y) -> {return x + y;};
(x, y) -> x + y;

람다식의 활용

  1. 이중 콜론 : 람다식을 보다 간결하게 사용할 수 있도록 해준다.
MyFunction mf = (int num) -> {System.out.println(num);};
MyFunction mf = num -> System.out.println(num);
MyFunction mf = System.out::println;
  1. 람다식을 함수의 매개변수로 사용할 수 있다.
@FunctionalInterface
public interface MyCalculator {
	public int plus(int num1, int num2);
}
public class Calculator4 {
	public static void main(String[] args) {
		// 람다식을 매개변수로 사용
		MyCalculator calc = (num1, num2) -> num1+num2;
		System.out.println(myCalc(calc));

		// 더 간략하게 만든다면 아래처럼 가능하다
		System.out.println(myCalc((num1, num2) -> num1+num2));
	}

	static int myCalc(MyCalculator calc) {
			return calc.plus(10, 7);
	}
}
  1. 컬렉션과 함수형 인터페이스
import java.util.*;

public class Calculator5 {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("이름1", "이름2", "이름3", "이름4", "이름5");
		//for문을 사용한 출력
		for(String s : list) {
			System.out.print(s+" ");
		}
		System.out.println();
		
		// 함수형 인터페이스 forEach를 사용
		list.forEach(x -> System.out.print(x+" "));
		System.out.println();

		// 이중콜론을 사용한 간결화
		// 다만 간격 조정이 안된다
		list.forEachprint;
	}
}
  1. 람다식을 반환값으로 사용하기
@FunctionalInterface
public interface MyCalculator {
	public int plus(int num1, int num2);
}
public class Calculator6 {
	public static void main(String[] args) {
		// 람다식을 반환값으로 사용하기
		MyCalculator calc = myCalc();
		System.out.println(calc.plus(10, 7));
	}

	static MyCalculator myCalc() {
		return (num1, num2) -> num1 + num2;
	}
}